home *** CD-ROM | disk | FTP | other *** search
/ Atari Forever 4 / Atari Forever 4.zip / Atari Forever 4.iso / PD_THEMA / EDITOREN / QED_397 / SOURCEN / MINTLIB.C < prev    next >
C/C++ Source or Header  |  1998-03-14  |  3KB  |  140 lines

  1. #include <ctype.h>
  2.  
  3. #include "global.h"
  4. #include "mintlib.h"
  5.  
  6.  
  7. GLOBAL WORD longName(UBYTE *filename)
  8. {
  9.     PATH    path;
  10.     LONG    ret;
  11.  
  12.     /* eigentlichen Dateinamen abschneiden und durch '.' ersetzen -
  13.         muß sein, da Datei evtl. noch nicht existiert... */
  14.     file_splitt(filename, path, NULL);
  15.     strcat(path, ".");
  16.     ret = Dpathconf(path, 3);
  17.     if ((ret < 0) || (ret == 12))
  18.         ret = 0;
  19.     return (WORD) ret;
  20. }
  21.  
  22.  
  23. GLOBAL BOOLEAN caseSens(UBYTE *filename, WORD *val)
  24. {
  25.     PATH    path;
  26.     LONG    ret;
  27.  
  28.     /* Eigentlichen Dateinamen abschneiden und durch '.' ersetzen -
  29.         muß sein, da Datei evtl. noch nicht existiert... */
  30.     file_splitt(filename, path, NULL) ;
  31.     strcat(path, ".") ;
  32.     ret = Dpathconf(path, 6);
  33.  
  34.     if (val != NULL)
  35.         *val = (WORD) ret;
  36.     /*
  37.      * ret = 2 tritt dann auf, wenn zwischen Groß/Klein nicht unterschieden
  38.      * wird, man aber Groß/Klein im Namen verwenden kann -> MacFS.
  39.      */
  40.     return (ret == 0 || ret == 2);
  41. }
  42.  
  43.  
  44. GLOBAL VOID raw_mode(WORD *old)
  45. {
  46. /* aus ioctl.h */
  47. #define TIOCGETP    (('T'<< 8) | 0)
  48. #define TIOCSETP    (('T'<< 8) | 25)
  49. #define CRMOD        0x0001
  50. #define ECHO        0x0004
  51. #define RAW            0x0010
  52.  
  53.     struct sgttyb
  54.     {
  55.         BYTE    sg_ispeed;
  56.         BYTE    sg_ospeed;
  57.        BYTE    sg_erase;
  58.        BYTE    sg_kill;
  59.        WORD    sg_flags;
  60.     } sgtty;
  61.  
  62.     if (mint)
  63.     {
  64.         Fcntl(0, (LONG)&sgtty, TIOCGETP);
  65.         if (*old == 0)
  66.         {
  67.             *old = sgtty.sg_flags;
  68.             sgtty.sg_flags |= RAW;
  69.         }
  70.         else
  71.             sgtty.sg_flags = *old;
  72.         Fcntl(0, (LONG)&sgtty, TIOCSETP);
  73.     }
  74. }
  75.  
  76.  
  77. /******************************************************************************/
  78. /* MiNT-Lib PL46                                                                                    */
  79. /******************************************************************************/
  80.  
  81. /*
  82.  * returns 0 for ordinary files, 1 for special files (like /dev/tty)
  83.  */
  84. GLOBAL WORD unx2dos(UBYTE *name)
  85. {
  86.     CONST UBYTE    *u;
  87.     UBYTE         *d, c;
  88.     PATH            unx;
  89.  
  90.     strcpy(unx, name);
  91.     name[0] = 0;
  92.     u = unx;
  93.     d = name;
  94.     if (!strncmp(u, "/dev/", 5))
  95.     {
  96.         u += 5;
  97.         /* make /dev/A/foo the same as A:/foo */
  98.  
  99.         if (*u && isalpha (*u) && (u[1] == 0 || (u[1] == '/' || u[1] == '\\')))
  100.         {
  101.             d[0] = *u++;
  102.             d[1] = ':';
  103.             d += 2;
  104.         }
  105.         /* check for a unix device name */
  106.         else if (mint)
  107.         {
  108.             strcpy(d, "U:\\dev\\");
  109.             d += 7;
  110.         }
  111.         else
  112.         {
  113.             strcpy(d, u);
  114.             strcat(d, ":");
  115.             if (!strcmp(d, "tty:"))
  116.                 strcpy(d, "con:");
  117.             return 1;
  118.         }
  119.     }
  120.     else if (mint && !strncmp(u, "/pipe/", 6))
  121.     {
  122.         u += 6;
  123.         strcpy(d, "U:\\pipe\\"); d += 8;
  124.     }
  125.     else if (*u == '/')
  126.     {
  127.         *d++ = 'U';
  128.         *d++ = ':';
  129.     }
  130.  
  131.     while( (c = *u++) != 0 )
  132.     {
  133.         if (c == '/')
  134.             c = '\\';
  135.         *d++ = c;
  136.     }
  137.     *d = 0;
  138.     return 0;
  139. }
  140.